Advanced Configuration and Power Interface (ACPI) is a specification that makes hardware status information available to an operating system (OS) in a computer, such as a laptop, desktop, server, etc. More information about ACPI may be found in the 600-plus page “Advanced Configuration and Power Interface Specification,” Revision 3.0a, Dec. 30, 2005, cooperatively defined by Hewlett-Packard Corporation, Intel Corporation, Microsoft Corporation, Phoenix Technologies Ltd., and Toshiba Corporation, available at http://www.acpi.info/DOWNLOADS/ACPIspec30a.pdf. The ACPI specification was developed to establish industry common interfaces enabling robust OS-directed motherboard device configuration and power management of both devices and entire systems. ACPI is the key element in operating system-directed configuration and power management (OSPM).
ACPI is used in computing platforms running a variety of operating systems, and allows the operating system to manipulate hardware resources. For example, ACPI assists in power management by allowing a computer system's peripherals to be powered on and off for improved power management. ACPI also allows the computer system to be turned on and off by external devices. For example, the touch of a mouse or the press of a key may wake up a computer system in a sleep or stand-by mode using ACPI.
ACPI has its own source and machine languages, referred to as ACPI Source Language (ASL) and ACPI Machine Language (AML), respectively. ASL is used to write new ACPI control methods, whereby ACPI is used by an OS to control new devices, or to control devices in new ways. ACPI comprises both static and interpretable tables containing device information. When the computing platform is powered on or restarted, the system firmware (such as the BIOS, or Basic Input/Output System) constructs the static tables, which are used by the OS. The interpretable tables are composed of AML, which is merged into the system firmware. The operating system reads the AML from the interpretable tables and executes the architected interfaces, using an ACPI interpreter. In this fashion, the operating system manipulates hardware resources. Because the interpretable tables are merged into the system firmware, this conventional approach can lack flexibility in controlling various configurations of a computing platform.
An ACPI namespace is a hierarchical tree structure in OS-controlled memory that contains named objects. These objects may be data objects, control method objects, bus/device package objects, and so on. The OS dynamically changes the contents of the namespace by loading and/or unloading definition blocks from the ACPI tables. Information in the ACPI namespace comes from a differentiated system description table (DSDT), which contains the differentiated definition block, and one or more other definition blocks. An original equipment manufacturer (OEM) typically supplies a DSDT to an ACPI-compatible OS, which supplies the implementation and configuration information about the base system. The OS inserts the DSDT information into the ACPI namespace at system boot time and doesn't remove it.
Another ACPI construct is the secondary system description table (SSDT). Multiple SSDTs can be used as part of a platform description. After the DSDT is loaded into the ACPI namespace, each secondary description table with a unique OEM Table ID is loaded. This allows the OEM to provide the base support in one table, while adding smaller system options in other tables. Additional tables can only add data; they cannot overwrite or remove data from previous tables.
Another construct in the ACPI architecture is defined by the system abstract layer (SAL); and is called a firmware interface table (FIT). The FIT contains starting addresses and sizes for the firmware components that are outside the protected boot block. A good overview of the FIT entry specification may be found in the “Intel® Itanium® Processor Family System Abstraction Layer Specification”, Document No. 245359-007, (Intel December 2003), available at http://www.intel.com/design/itanium/downloads/24535907.pdf.